package com.bingbing.back.controller;

import com.bingbing.back.dto.CityLocDto;
import com.bingbing.back.dto.SchoolInfoDto;
import com.bingbing.back.po.SchoolInfo;
import com.bingbing.back.service.SchoolInfoService;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;

@CrossOrigin
@RestController
@RequestMapping("/school")
public class SchoolInfoController {
    @Resource
    private SchoolInfoService schoolInfoService;

    /**
     * 根据用户所在地区，将数据库按人气值排序后的高校进行重新排序
     * 将本地地区的学校推荐提前
     * @param dto 包含用户当前定位的省份和城市
     * @return 高校信息：名称和logo
     */
    @RequestMapping("/recommend")
    public List<SchoolInfo> recommendSchool(SchoolInfoDto dto){
        return schoolInfoService.recommendSchool(dto);
    }
    /**
     * 根据学校基本信息搜索学校，可按人气值排序，和距离优先排序
     * 可按分数线搜索，招生类型=‘其他’时，则搜索出招生类型！=‘普通类’的所有学校分数线信息
     * 初始显示所有学校，完成分页
     * @param pageNum 显示数据的页面
     * @param pageSize 每页数据条数
     * @param dto 搜索学校信息+包含Citys的list数组：搜索的多个城市
     * @return 用PageInfo封装搜索处理的学校信息，完成分页操作
     */
    @RequestMapping("/searchSchool")
    public PageInfo<SchoolInfoDto> searchSchool(int pageNum, int pageSize, SchoolInfoDto dto) {
        return schoolInfoService.searchSchool(pageNum, pageSize, dto);
    }

    // 按照学校id显示学校页面所有信息
    @RequestMapping("/showSchoolById")
    public SchoolInfoDto showSchoolById(int schoolId){
        return schoolInfoService.showSchoolById(schoolId);
    }

    @RequestMapping("/searchIntroBySchoolId")
    public List<String> searchIntroBySchoolId(int schoolId){
        return schoolInfoService.searchIntroBySchoolId(schoolId);
    }

    /**
     * 按照该学校的最新分数，查询同年相近分数（-13，+8）的学校信息
     * @param schoolId
     * @return 只推荐最多前15个高校
     */
    @RequestMapping("/getCloseScoreSchool")
    public List<SchoolInfoDto> getCloseScoreSchool(int schoolId){
        return schoolInfoService.getCloseScoreSchool(schoolId);
    }

    // 用作学校购买人气值接口
    @RequestMapping("/addClout")
    public void addClout(int schoolId, int val){
        schoolInfoService.addClout(schoolId, val);
    }

    // 返回当前省份下的所有学校
    @RequestMapping("/findByProvince")
    List<CityLocDto> findByProvince(){
        return schoolInfoService.findByProvince();
    }
}
